package com.chujian.framework.core.tsdata;


/**
 * 控制层统一会返回结果集
 */
public class Results {

    /**
     * 公共返回
     *
     * @param code    返回代码
     * @param message 返回消息
     * @param data    返回数据
     * @return Result实体
     */
    public static Result common(Integer code, String message, Object data) {
        Result result = new Result();
        result.setCode(code);
        result.setMsg(message);
        result.setData(data);
        return result;
    }


    /**
     * 成功返回
     *
     * @param message 返回消息
     * @param data    返回数据
     * @return Result实体
     */
    public static Result ok(String message, Object data) {
        return common(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), data);
    }


    /**
     * 成功返回
     *
     * @param message 返回消息
     * @return Result实体
     */
    public static Result ok(String message) {
        return common(ResultCode.OK.getCode(), message, null);
    }


    /**
     * 成功返回
     *
     * @param data 返回数据
     * @return Result实体
     */
    public static Result ok(Object data) {
        return common(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), data);
    }


    /**
     * 成功返回
     *
     * @return Result实体
     */
    public static Result ok() {
        return common(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), null);
    }


    /**
     * 错误返回
     *
     * @param message 返回消息
     * @param data    返回数据
     * @return Result实体
     */
    public static Result err(String message, Object data) {
        return common(ResultCode.ERR.getCode(), message, data);
    }


    /**
     * 错误返回
     *
     * @param message 返回消息
     * @return Result实体
     */
    public static Result err(String message) {
        return common(ResultCode.ERR.getCode(), message, null);
    }


    /**
     * 错误返回
     *
     * @param code    响应码
     * @param message 返回消息
     * @return Result实体
     */
    public static Result err(Integer code, String message) {
        return common(code, message, null);
    }

    /**
     * 错误返回
     *
     * @param data 返回数据
     * @return Result实体
     */
    public static Result err(Object data) {
        return common(ResultCode.ERR.getCode(), ResultCode.ERR.getMsg(), data);
    }


    /**
     * 错误返回
     *
     * @return Result实体
     */
    public static Result err() {
        return common(ResultCode.ERR.getCode(), ResultCode.ERR.getMsg(), null);
    }


    /**
     * 判断返回
     *
     * @param status         成功失败的状态
     * @param successMessage 成功返回的消息
     * @param errorMessage   失败返回的消息
     * @param data           返回的数据
     * @return Result实体
     */
    public static Result bool(boolean status, String successMessage, String errorMessage, Object data) {
        if (status) {
            return ok(successMessage, data);
        } else {
            return err(errorMessage, data);
        }
    }


    /**
     * 判断返回
     *
     * @param status         成功失败的状态
     * @param successMessage 成功返回的消息
     * @param errorMessage   失败返回的消息
     * @return Result实体
     */
    public static Result bool(boolean status, String successMessage, String errorMessage) {
        if (status) {
            return ok(successMessage);
        } else {
            return err(errorMessage);
        }
    }

    /**
     * 判断返回
     *
     * @param status 成功失败的状态
     * @param data   返回的数据
     * @return Result实体
     */
    public static Result bool(boolean status, Object data) {
        if (status) {
            return ok(data);
        } else {
            return err(data);
        }
    }


    /**
     * 判断返回
     *
     * @param status 成功失败的状态
     * @return Result实体
     */
    public static Result bool(boolean status) {
        if (status) {
            return ok();
        } else {
            return err();
        }
    }
}
